home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / MOS / VT52.I < prev    next >
Encoding:
Modula Implementation  |  1990-10-24  |  2.8 KB  |  110 lines

  1. IMPLEMENTATION MODULE VT52;
  2.  
  3. (*$Y+,R-*)
  4.  
  5. CONST  TermCH = 0C;   (* Zeichen für String-Ende *)
  6.        ESC    = 33C;
  7.        CR     = 15C;
  8.        LF     = 12C;
  9.  
  10.  
  11. PROCEDURE GetGotoRowColSeq ( row, col: CARDINAL; VAR seq: ARRAY OF CHAR );
  12.   BEGIN
  13.     IF HIGH (seq) < 3 THEN
  14.       HALT (* String ist zu klein *)
  15.     ELSE
  16.       seq [0]:= Seq [gotoRowCol,0];
  17.       seq [1]:= Seq [gotoRowCol,1];
  18.       seq [2]:= CHR (row+32);
  19.       seq [3]:= CHR (col+32);
  20.       IF HIGH (seq) >= 4 THEN seq [4]:= TermCH END
  21.     END
  22.   END GetGotoRowColSeq;
  23.  
  24. PROCEDURE GetWritingColorSeq ( color: CARDINAL; VAR seq: ARRAY OF CHAR );
  25.   BEGIN
  26.     IF HIGH (seq) < 2 THEN
  27.       HALT (* String ist zu klein *)
  28.     ELSE
  29.       seq [0]:= Seq [writingColor,0];
  30.       seq [1]:= Seq [writingColor,1];
  31.       seq [2]:= CHR (color+64);
  32.       IF HIGH (seq) >= 3 THEN seq [3]:= TermCH END
  33.     END
  34.   END GetWritingColorSeq;
  35.  
  36. PROCEDURE GetBackgroundColorSeq ( color: CARDINAL; VAR seq: ARRAY OF CHAR );
  37.   BEGIN
  38.     IF HIGH (seq) < 2 THEN
  39.       HALT (* String ist zu klein *)
  40.     ELSE
  41.       seq [0]:= Seq [backgroundColor,0];
  42.       seq [1]:= Seq [backgroundColor,1];
  43.       seq [2]:= CHR (color+64);
  44.       IF HIGH (seq) >= 3 THEN seq [3]:= TermCH END
  45.     END
  46.   END GetBackgroundColorSeq;
  47.  
  48. PROCEDURE GotoRowColSeq ( row, col: CARDINAL ): ExtSeqStr;
  49.   VAR s: ExtSeqStr;
  50.   BEGIN
  51.     GetGotoRowColSeq (row, col, s);
  52.     RETURN s
  53.   END GotoRowColSeq;
  54.  
  55. PROCEDURE WritingColorSeq ( color: CARDINAL ): ExtSeqStr;
  56.   VAR s: ExtSeqStr;
  57.   BEGIN
  58.     GetWritingColorSeq (color, s);
  59.     RETURN s
  60.   END WritingColorSeq;
  61.  
  62. PROCEDURE BackgroundColorSeq ( color: CARDINAL ): ExtSeqStr;
  63.   VAR s: ExtSeqStr;
  64.   BEGIN
  65.     GetBackgroundColorSeq (color, s);
  66.     RETURN s
  67.   END BackgroundColorSeq;
  68.  
  69. (*
  70. VAR c: SeqRange;
  71.  
  72. BEGIN
  73.   FOR c:= MIN (SeqRange) TO MAX (SeqRange) DO
  74.     Seq [c,0]:= ESC;
  75.     Seq [c,1]:= TermCH;
  76.     Seq [c,2]:= TermCH;
  77.   END;
  78.   Seq [up,1]:= 'A';
  79.   Seq [down,1]:= 'B';
  80.   Seq [right,1]:= 'C';
  81.   Seq [left,1]:= 'D';
  82.   Seq [moveUp,1]:= 'I';
  83.   Seq [moveDown,0]:= LF;  (* Dieser Code existiert nicht als ESC-Sequenz *)
  84.   Seq [home,1]:= 'H';
  85.   Seq [firstCol,0]:= CR;  (* Dieser Code existiert nicht als ESC-Sequenz *)
  86.   Seq [gotoRowCol,1]:= 'Y';
  87.   Seq [saveRowCol,1]:= 'j';
  88.   Seq [restoreRowCol,1]:= 'k';
  89.   Seq [clearScreen,1]:= 'E';
  90.   Seq [clearEOS,1]:= 'J';
  91.   Seq [clearEOL,1]:= 'K';
  92.   Seq [clearBOS,1]:= 'd';
  93.   Seq [clearBOL,1]:= 'o';
  94.   Seq [clearLine,1]:= 'l';
  95.   Seq [insertLine,1]:= 'L';
  96.   Seq [deleteLine,1]:= 'M';
  97.   Seq [writingColor,1]:= 'b';
  98.   Seq [backgroundColor,1]:= 'c';
  99.   Seq [cursorOn,1]:= 'e';
  100.   Seq [cursorOff,1]:= 'f';
  101.   Seq [reverseOn,1]:= 'p';
  102.   Seq [reverseOff,1]:= 'q';
  103.   Seq [wrapOn,1]:= 'v';
  104.   Seq [wrapOff,1]:= 'w';
  105.   Seq [enhancedOn,1]:= CHR (5);
  106.   Seq [flush,1]:= CHR (16);
  107.   Seq [enhancedOff,1]:= CHR (6);
  108. *)
  109. END VT52.
  110.